Using a decrementer interrupt to start long-running hardware operations before the end of a shared processor dispatch cycle

ABSTRACT

Systems, methods, and computer program products to perform an operation, the operation comprising processing a first logical partition on a shared processor for the duration of a dispatch cycle, issuing, by a hypervisor, at a predefined time prior to completion of the dispatch cycle, a lightweight hypervisor decrementer (HDEC) interrupt specifying a cache line address buffer location in a virtual processor, and responsive to the lightweight HDEC, writing, by the shared processor, a set of cache line addresses used by the first logical partition to the cache line address buffer location in the virtual processor.

BACKGROUND

The present disclosure relates to computer processors, and morespecifically, to using a decrementer interrupt to start long-runninghardware operations before the end of a shared processor dispatch cycle.

Shared processors may be time-sliced to allow multiple partitions to runperiodically. Such sharing may be referred to as “micro-partitioning.”Whenever a partition is dispatched to a physical processor, thatpartition may execute for a set amount of time (referred to as a“dispatch cycle”). Different hardware operations may need to becompleted between dispatch cycles. While these hardware operationsexecute, the shared processor (and other system resources) are not usedby partitions, meaning system resources go unused by the logicalpartitions during the hardware operations.

SUMMARY

Embodiments disclosed herein include, without limitation, a system,method, and computer program product to perform an operation, theoperation comprising processing a first logical partition on a sharedprocessor for the duration of a dispatch cycle, issuing, by ahypervisor, at a predefined time prior to completion of the dispatchcycle, a lightweight hypervisor decrementer (HDEC) interrupt specifyinga cache line address buffer location in a virtual processor, andresponsive to the lightweight HDEC, writing, by the shared processor, aset of cache line addresses used by the first logical partition to thecache line address buffer location in the virtual processor.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 illustrates techniques to use a decrementer interrupt to startlong-running hardware operations before the end of a shared processordispatch cycle, according to one embodiment.

FIG. 2 illustrates a system to use a decrementer interrupt to startlong-running hardware operations before the end of a shared processordispatch cycle, according to one embodiment.

FIG. 3 illustrates a method to use a decrementer interrupt to startlong-running hardware operations before the end of a shared processordispatch cycle, according to one embodiment.

FIG. 4 illustrates a method to determine a time required to perform ahardware operation, according to one embodiment.

DETAILED DESCRIPTION

Embodiments disclosed herein use lightweight hypervisor decrementer(HDEC) interrupts to initiate asynchronous hardware operations prior tocompleting a dispatch cycle for a logical partition (or virtual machine)executing on a shared processor. In doing so, the hardware operationsmay be performed in parallel with the dispatch cycle of the logicalpartitions, such that the hypervisor need not wait for the hardwareoperations to complete after the dispatch cycle of the current logicalpartition ends to start the dispatch cycle of the next logicalpartition. Furthermore, embodiments disclosed herein compute an expected(or predicted) amount of time required to complete the hardwareoperation, based on historical times to complete similar operations andhow often the similar operations complete prior to or subsequent to theend of the dispatch cycle for a given logical partition. In estimatinghow long the hardware operation will take to complete, the hypervisormanaging the shared resources can be modified to initiate the hardwareoperation such that the hardware operation completes prior to the end ofthe current dispatch cycle. For example, hardware operation X may needto be completed for each dispatch cycle. If the hypervisor determinesthat the hardware operation X will take one hundred microseconds tocomplete, the hypervisor may issue a lightweight HDEC interrupt onehundred microseconds prior to the end of the current dispatch cycle,allowing the hypervisor to initiate the hardware operation X. Performingthe operations in parallel with the dispatch cycles improves systemresource utilization.

As used herein, a “full HDEC interrupt” refers to a hypervisordecrementer interrupt that initiates, without limitation, operations todetermine whether or not to relinquish a logical partition's control ofa processor. A full HDEC interrupt may also initiate hardwareoperations. As used herein, a “lightweight HDEC interrupt” refers to ahypervisor decrementer interrupt that initiates long running hardwareoperations in a processor. Therefore, a lightweight HDEC interrupt maybe viewed as triggering a subset of the operations that may be initiatedby a full HDEC interrupt.

One example of an asynchronous hardware operation includes a“micropartition prefetch.” Memory caches of the processor are sharedamongst all partitions running on the processor. As such, partitionscompete for cache resources, which may result in cache thrashing. Thisproblem may be exacerbated by many partitions sharing the same processorresource. Micropartition prefetch allows micro-partitions to reducecache miss latency. At the end of a partition's dispatch cycle, theprocessor may log the addresses of cache lines used by the partition toa memory buffer in the virtual processor. When the partition isdispatched again, those cache lines are restored to prevent cache missesearly in the dispatch cycle.

Micropartition prefetch, however, relies on the addresses of the cachelines being logged quickly, as the next partition cannot run until alladdresses of the cache lines are logged or else the recorded addresseswill be inaccurate. If the time to log the addresses is too great, thepartition may overrun its dispatch cycle, and waste processor cycleswhich could be used for useful work. Therefore, logging the addresses ofthe cache lines used by the partition is an example hardware operationthat may be triggered by a lightweight HDEC prior to completion of thecurrent dispatch cycle. Generally, the hypervisor may compute anestimated amount of time required to log the addresses. The estimatedamount of time may be based on prior amounts of time required to log theaddresses. The estimated amount of time may be modified by a fractionalamount of the logging process, based on whether or not the hypervisorpreviously stalled waiting for the logging process to complete (afterthe current dispatch cycle ends). Therefore, if the hypervisordetermines that the next logging process may take 50 microseconds tocomplete, the hypervisor may issue the lightweight HDEC 50 microsecondsprior to the completion of the current dispatch cycle, causing thelogging to be completed during the current dispatch cycle of the logicalpartition.

While logging addresses of cache lines is used herein as a referenceexample of an asynchronous hardware operation, embodiments presentedherein may be adapted for use with other hardware operations that may beperformed prior to the completion of a dispatch cycle.

FIG. 1 is a schematic 100 illustrating techniques to use a decrementerinterrupt to start long-running hardware operations before the end of ashared processor dispatch cycle, according to one embodiment. Generally,the schematic 100 reflects a shared processor sharing processing timeequally and periodically between different micropartitions (alsoreferred to as partitions, or virtual machines) over time. As shown, thepartitions 101-104 may execute for a dispatch cycle 105. The differentdispatch cycles 105 may be equal, such that each partition 101-104executes for the same amount of time, or the dispatch cycles 105 may beof different lengths, such that each partition 101-104 executes fordifferent amounts of time.

Whenever a dispatch cycle 105 ends, a hypervisor managing the sharedprocessor may issue a hypervisor decrementer (HDEC) interrupt 107 ₁₋₆,which may include operations to determine whether or not to relinquishthe partition's control of the processor. If a result of the operationsdetermines the partition's control of the processor should berelinquished, a new partition may be dispatched to the processor. Forexample, partition 101 is dispatched when the hypervisor issuesinterrupt 107 ₁, while partition 102 is dispatched when the hypervisorissues interrupt 107 ₂, and so on. In addition, the hypervisor isconfigured to trigger hardware operations by issuing a lightweighthypervisor decrementer (HDEC) interrupt 106 ₁₋₆ prior to the end of thecurrent dispatch cycle 105. Generally, the hypervisor may determine howlong the hardware operation may take to complete, and trigger theinterrupt with enough time such that the hardware operation may completeprior to (or roughly contemporaneously with) the end of the currentdispatch cycle 105. Doing so allows the logical partitions 101-104 tocontinue to run while the hardware operations are performed, minimizingthe amount of down time previously required to complete the hardwareoperations in between dispatch cycles 105. As shown, the hardwareoperations and logical partitions share an amount of time 108, where thepartitions 101-104 run while the hardware operations continue.

Generally, the hypervisor must determine when the lightweight HDECinterrupts should occur. There is a delicate balance between startinghardware operations too early, and starting them too late. If hardwareoperations are started too early, the full benefit of the operation maynot be realized. In the case of micropartition prefetch, e.g., somecache lines used at the end of the dispatch cycle may be missed. If thehardware operations are started too late, the hypervisor must wait forthe operations to complete before dispatching the next partition,wasting processor cycles.

Additionally, hardware operation durations may vary from dispatch todispatch. This floating target introduces some complexity to thealgorithms necessary to plan lightweight HDECs at the most opportunetime. In order to address this issue, embodiments disclosed hereinmaintain a running history of the last n hardware operation durations,and average the history of durations in order to smooth the jitterassociated with workload and hardware variations. In order to optimizethese averaged times, embodiments disclosed herein may add or subtract afractional time of the hardware operation from the average time,depending on how frequently the hypervisor stalls waiting for operationsto complete. For example, if the number of times the hypervisor stallsexceeds a predefined threshold, the fractional time may be added toprovide additional time for the hardware operation to complete. If thenumber of times the hypervisor does not stall waiting for the hardwareoperation to complete exceeds a specified threshold (i.e., the hardwareoperation consistently completes prior to the end of the dispatchcycle), the fractional time may be subtracted from the average time.

FIG. 2 illustrates a networked system 200 which uses a decrementerinterrupt to start long-running hardware operations before the end of ashared processor dispatch cycle, according to one embodiment. Thenetworked system 200 includes a computer 202. The computer 202 generallyincludes one or more processors 204 connected via a bus 220 to a memory206, a network interface device 228, an input device 222, and an outputdevice 224. The processor 204 is included to be representative of asingle CPU, multiple CPUs, a single CPU having multiple processingcores, and the like. Generally, the processor 204 includes anyprocessing element any processing element capable of performing thefunctions described here. One example of the processor 204 is the POWER8processor by the International Business Machines Corporation.

The memory 206 may include a variety of computer readable media selectedfor relative performance or other capabilities: volatile and/ornon-volatile media, removable and/or non-removable media, etc. Memory206 may include cache, random access memory (RAM), storage, etc. Memory206 may include one or more discrete memory modules, such as dynamic RAM(DRAM) dual inline memory modules (DIMMs). Of course, various memorychips, bandwidths, and form factors may alternately be selected. Storagemay typically provide a non-volatile memory for the computer 202, andmay include one or more different storage elements such as flash memory,a hard disk drive, a solid state drive, an optical storage device,and/or a magnetic storage device.

The input device 222 may be any device for providing input to thecomputer 202. For example, a keyboard and/or a mouse may be used. Theoutput device 224 may be any device for providing output to a user ofthe computer 202. For example, the output device 224 may be anyconventional display screen or set of speakers. Although shownseparately from the input device 222, the output device 224 and inputdevice 222 may be combined. For example, a display screen with anintegrated touch-screen may be used. The network interface device 218may be any type of network communications device allowing the computer202 to communicate with other computers via a network 230. In general,the network 230 may be a telecommunications network and/or a wide areanetwork (WAN). In a particular embodiment, the network 230 is theInternet.

As shown, the memory includes a hypervisor 212, which is an applicationgenerally configured to actively manage the distribution and utilizationof virtualized hardware resources to one or more logical partitions 217.The hypervisor 212 may be included as part of the computer 202, asshown, or may be a separate networked computing device. The hypervisor212 is an example of firmware, or an operating system, of the computer202. The hypervisor 212 abstracts hardware resources, such as theprocessor 204 and memory 206, from the logical partitions 217. Thehypervisor 212 may generally create, manage, and schedule thedispatching of virtual processors 213 for each of the logical partitions217. The virtual processors 213 are generally a representation of aphysical processor core to the operating system of a logical partition217 that uses shared processors.

The logical partitions 217 (also referred to as virtual machines) areinstances of operating systems executing on the computer 202. Examplesof operating systems include the AIX operating system, versions of theMicrosoft Windows operating system, and distributions of the Linuxoperating system. (Microsoft and Windows are trademarks of MicrosoftCorporation in the United States, other countries, or both. Linux is aregistered trademark of Linus Torvalds in the United States, othercountries, or both). The logical partitions 217 may further execute anytype of application (not shown).

The hypervisor 212 shares the processors 204 to allow the logicalpartitions 217 to run periodically. Whenever a logical partition 217 isdispatched to a shared processor 204, the logical partition 217 executesfor a set amount of time, known as the dispatch cycle. In order toregain control of the processor 204 from a logical partition 217, thehypervisor 212 may issue a hypervisor decrementer (HDEC) interrupt 215.The HDEC 215 is programmed to interrupt the logical partition 217 whenits dispatch cycle is complete. An interrupt is generally a signal tothe processor 204 emitted by hardware or software indicating an eventthat needs immediate attention. The hypervisor 212 is further configuredto issue a lightweight HDEC interrupt 216 to trigger hardware operationsin the processors 204. Generally, the hardware operations may be anytype of hardware operation, such as logging addresses of cache linesused by the logical partition 217 during its dispatch cycle, such thatportions of memory 206 used by the logical partition 217 may be restoredin subsequent dispatch cycles for that logical partition 217. Thehypervisor 212 may issue the lightweight HDEC interrupt 216 at a timeprior to the completion of the dispatch cycle of the current logicalpartition 217.

The hypervisor 212 may determine this time by referencing previous timesto complete the hardware operation stored in the time data 208 of thevirtual processor 213. The time data 208 generally includes attributesregarding prior hardware operations, such as the type of hardwareoperation, the amount of time required to complete the hardwareoperation, workload statistics, the hardware configurations, and anindication of whether the hardware operation completed prior to the endof its concurrent dispatch cycle. The hypervisor 212 may average thetimes in the time data 208 (related to the current hardware operation)to determine, on average, how long the current hardware operation takesto complete. The hypervisor 212 may then adjust the average time byadding or subtracting a fractional time of the hardware operationdepending on how frequently the prior hardware operations completedafter or prior to completion of the dispatch cycle, respectively. Forexample, if the number of times the hardware operation completed afterthe end of the dispatch cycle (and the hypervisor 212 therefore stallswaiting for the hardware operation to complete) exceeds a predefinedthreshold, the hypervisor 212 may add time to the average time in orderto ensure that the hardware operation completes prior to the end of thedispatch cycle. Similarly, if the number of times the hardware operationcompleted prior to the end of the dispatch cycle exceeds a specifiedthreshold, the hypervisor 212 may subtract time from the average time.

Once the hypervisor 212 determines an estimated amount of time tocomplete the hardware operation, the hypervisor 212 may trigger thelightweight HDEC 216 at the same amount of time prior to the completionof the current dispatch cycle. For example, if the hypervisor 212determines that the hardware operation take one hundred microseconds tocomplete, the hypervisor 212 may issue the lightweight HDEC interrupt216 one hundred microseconds prior to the completion of the dispatchcycle. Once the hardware operation completes, the hypervisor 212 logsmetrics related to the hardware operation (such as time to completion,hardware configurations, operation type, and the like) in the time data208. Doing so allows the hypervisor 212 to improve the estimated time tocompletion for subsequent hardware operations (and therefore moreaccurately issue the lightweight HDEC interrupt 216).

As shown, the virtual processors 213 also include a cache line addressbuffer 214. The cache line address buffer 214 is a data store holdingaddresses of cache lines the logical partitions 217 use duringexecution. When the hypervisor 212 issues the lightweight HDEC 216 tothe processor 204 (which includes a location of the cache line addressbuffer 214), the processor 204 may write the cache lines addressespointing to areas in the memory 206 (which may include L2 and L3 cache)used by the logical partitions 217 during processing.

FIG. 3 illustrates a method 300 to use a decrementer interrupt to startlong-running hardware operations before the end of a shared processordispatch cycle, according to one embodiment. The steps of the method 300are discussed using logging addresses of cache lines as a referenceexample of a hardware operation.

At step 310, the hypervisor 212 may dispatch a first logical partition217 to a processor 204. At step 320, the processor 204 may execute thefirst logical partition 217 for the duration of a dispatch cycle. Atstep 330, the hypervisor 212 may determine an estimated amount of timerequired to perform a hardware operation, such that the hypervisor 212can issues a lightweight HDEC interrupt 216, prior to the end of thedispatch cycle, to perform the hardware operation. As described ingreater detail with reference to FIG. 4, the hypervisor 212 generallyrelies on the times of prior hardware operations to determine when toissue the lightweight HDEC interrupt 216. One example of a hardwareoperation is logging cache line addresses used by the first logicalpartition 217 during its dispatch cycle to the cache line address buffer214. At step 340, the hypervisor 212 issues the lightweight HDECinterrupt 216 at a time sufficient to complete the hardware operationhaving an estimated time of completion determined at step 330. At step350, the hardware performs the operation responsive to the lightweightHDEC interrupt 216. For example, the processor 204 may begin logging thecache line addresses used by the first logical partition 217 to thecache line address buffer 214. At step 360, the hypervisor 212 may issuean HDEC interrupt 215 at the end of the dispatch cycle (and completionof the hardware operation) to transfer control of the processor 204 tothe hypervisor 212. At step 370, the hypervisor 212 may determine anamount of time required to complete the hardware operation. Thehypervisor 212 may store this information in the time data 208. At step380, the hypervisor 212 may dispatch a second logical partition 217 tothe processor 204.

FIG. 4 illustrates a method 400 corresponding to step 330 to determinewhen to perform a hardware operation, according to one embodiment.Generally, the hypervisor 212 may perform the steps of the method 400 tocompute an amount of time required to perform a hardware operation, suchthat the hypervisor 212 may issue the lightweight HDEC interrupt 216with enough time to complete the hardware operation prior to the end ofthe current dispatch cycle.

At step 410, the hypervisor 212 may average the previous time periodsrequired to complete the hardware operation. The hypervisor 212 will usethis computed time to trigger, via a new lightweight HDEC interrupt 216,the hardware operation. For example, if the hardware operation islogging cache line addresses, the hypervisor 212 may reference the timedata 208 in order to determine how long previous operations took to logcache line addresses took. The hypervisor 212 may determine an averagetime for the cache line address logging from the time data 208. At step420, the hypervisor 212 may determine the number of times the hardwareoperations previously completed before and/or after the concurrentdispatch cycle completed. For example, by referencing the time data 208,the hypervisor 212 may determine how many times cache line addresslogging completed prior to or after the dispatch cycle finished.Generally, at step 420, the hypervisor 212 determines how often thehypervisor 212 previously stalled waiting for a hardware operationcompleted, such that the hypervisor 212 may adjust the average time inorder to better ensure that the hardware operation completes prior tothe end of the current dispatch cycle.

At step 430, the hypervisor 212 may, upon determining that the number oftimes the hardware operation completed before the dispatch cyclecompleted exceeds a threshold, subtract a fractional time of thehardware operation to the average time computed at step 410. Forexample, if the threshold is 10 times, and the hardware operationcompleted prior to the end of the dispatch cycle 20 times (in the past noperations), the hypervisor 212 may reduce the average time, allowingthe hardware operation to start closer towards the end of the dispatchcycle. At step 440, the hypervisor 212 may, upon determining that thenumber of times the hardware operation completed after the dispatchcycle completed exceeds a threshold, add a fractional time of thehardware operation to the average time computed at step 410. Forexample, if the threshold is 10 times, and the hardware operationcompleted after the dispatch cycle completed 20 times (in the past noperations), the hypervisor 212 may add time to the average time,allowing the hardware operation to start further from the end of thedispatch cycle. Although counts and threshold numbers are described, anysuitable methodology may be able to determine whether the hypervisor 212repeatedly stalls waiting for the hardware operation to complete afterthe dispatch cycle completes. For example, the thresholds may be apercentage of prior hardware operations, such as 50%. At step 450, thehypervisor 212 may return the time required to complete the hardwareoperation, such that the hypervisor 212 can issue the lightweight HDECinterrupt 216 at a time that better ensures that the hardware operationwill complete prior to the end of the current dispatch cycle.

Advantageously, embodiments disclosed herein trigger asynchronoushardware operations during the dispatch cycle of a logical partition ona shared processor. Embodiments disclosed herein compute an expectedtime to complete the operation, based on historical amounts of timerequired to complete similar hardware operations. As the end of thedispatch cycle nears, embodiments disclosed herein may issue alightweight HDEC interrupt to trigger the hardware operation such thatthe hardware operation completes prior to the end of the currentdispatch cycle.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

As will be appreciated by one skilled in the art, aspects of the presentdisclosure may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present disclosure may take theform of an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present disclosure may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent disclosure may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present disclosure are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of thedisclosure. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

Embodiments of the disclosure may be provided to end users through acloud computing infrastructure. Cloud computing generally refers to theprovision of scalable computing resources as a service over a network.More formally, cloud computing may be defined as a computing capabilitythat provides an abstraction between the computing resource and itsunderlying technical architecture (e.g., servers, storage, networks),enabling convenient, on-demand network access to a shared pool ofconfigurable computing resources that can be rapidly provisioned andreleased with minimal management effort or service provider interaction.Thus, cloud computing allows a user to access virtual computingresources (e.g., storage, data, applications, and even completevirtualized computing systems) in “the cloud,” without regard for theunderlying physical systems (or locations of those systems) used toprovide the computing resources.

Typically, cloud computing resources are provided to a user on apay-per-use basis, where users are charged only for the computingresources actually used (e.g. an amount of storage space consumed by auser or a number of virtualized systems instantiated by the user). Auser can access any of the resources that reside in the cloud at anytime, and from anywhere across the Internet. In context of the presentdisclosure, a user may access applications or related data available inthe cloud. For example, the hypervisor 212 could execute on a computingsystem in the cloud and issue lightweight HDEC interrupts to triggerasynchronous hardware operations during processing of a logicalpartition on a shared processor. In such a case, the hypervisor 212could compute the amount of time required to complete the hardwareoperation, and store the amount of time at a storage location in thecloud. Doing so allows a user to access this information from anycomputing system attached to a network connected to the cloud (e.g., theInternet).

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present disclosure. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

While the foregoing is directed to embodiments of the presentdisclosure, other and further embodiments of the disclosure may bedevised without departing from the basic scope thereof, and the scopethereof is determined by the claims that follow.

What is claimed is:
 1. A system comprising: one or more shared computerprocessors; and a memory containing a program, which when executed bythe one or more shared computer processors, performs an operationcomprising: processing a plurality of logical partitions on a sharedprocessor for the duration of a respective dispatch cycle; issuing, by ahypervisor, at a predefined time prior to completion of each dispatchcycle, a lightweight hypervisor decrementer (HDEC) interrupt specifyinga respective cache line address buffer location in a virtual processor;responsive to each lightweight HDEC interrupt, writing, by the sharedprocessor, a set of cache line addresses used by each logical partitionto the respective cache line address buffer location in the virtualprocessor; determining an average amount of time required to write thesets of cache line addresses; and setting the average amount of time asthe predefined time to issue the lightweight HDEC during subsequentprocessing of each logical partition.
 2. The system of claim 1, theoperation further comprising: determining an amount of time required towrite each of the set of cache line addresses to the respective cacheline address buffer; and storing each amount of time.
 3. The system ofclaim 1, the operation further comprising: upon determining that a countof times the shared processor completes the writing of the sets of cacheline addresses to the buffer prior to the completion of each respectivedispatch cycle exceeds a predefined threshold, subtracting a fractionalamount of time from the predefined time to cause the lightweightinterrupt to be issued closer to the end of the dispatch cycle for thefirst logical partition.
 4. The system of claim 1, the operation furthercomprising: upon determining that a count of times the shared processorcompletes the writing of the sets of cache line addresses to the bufferafter the completion of each respective dispatch cycle exceeds apredefined threshold, adding a fractional amount of time to thepredefined time to cause the lightweight interrupt to be issued occurfurther from the end of the dispatch cycle for the first logicalpartition.
 5. The system of claim 1, the operation further comprising:upon completion of the dispatch cycle for the first logical partition,issuing, by the hypervisor, a hypervisor decrementer (HDEC) interruptthat causes a second logical partition to be processed by the sharedprocessor for the duration of a next dispatch cycle.
 6. The system ofclaim 1, wherein the cache line addresses are written to the cache lineaddress buffer in order to facilitate a subsequent micropartitionprefetch process by the first logical partition.
 7. A computer programproduct, comprising: a non-transitory computer-readable storage mediumhaving computer-readable code embodied therewith, the computer-readableprogram code executable by a shared processor to perform an operationcomprising: processing a plurality of logical partitions on a sharedprocessor for the duration of a respective dispatch cycle; issuing, by ahypervisor, at a predefined time prior to completion of each dispatchcycle, a lightweight hypervisor decrementer (HDEC) interrupt specifyinga respective cache line address buffer location in a virtual processor;responsive to each lightweight HDEC interrupt, writing, by the sharedprocessor, a set of cache line addresses used by each logical partitionto the respective cache line address buffer location in the virtualprocessor; determining an average amount of time required to write thesets of cache line addresses; and setting the average amount of time asthe predefined time to issue the lightweight HDEC during subsequentprocessing of each logical partition.
 8. The computer program product ofclaim 7, further comprising: determining an amount of time required towrite each of the set of cache line addresses to the respective cacheline address buffer; and storing each amount of time.
 9. The computerprogram product of claim 7, the operation further comprising: upondetermining that a count of times the shared processor completes thewriting of the sets of cache line addresses to the buffer prior to thecompletion of each respective dispatch cycle exceeds a predefinedthreshold, subtracting a fractional amount of time from the predefinedtime to cause the lightweight interrupt to be issued closer to the endof the dispatch cycle for the first logical partition.
 10. The computerprogram product of claim 7, the operation further comprising: upondetermining that a count of times the shared processor completes thewriting of the sets of cache line addresses to the buffer after thecompletion of each respective dispatch cycle exceeds a predefinedthreshold, adding a fractional amount of time to the predefined time tocause the lightweight interrupt to be issued occur further from the endof the dispatch cycle for the first logical partition.
 11. The computerprogram product of claim 7, the operation further comprising: uponcompletion of the dispatch cycle for the first logical partition,issuing, by the hypervisor, a hypervisor decrementer (HDEC) interruptthat causes a second logical partition to be processed by the sharedprocessor for the duration of a next dispatch cycle.
 12. A computerprogram product, comprising: a computer-readable storage medium havingcomputer-readable program code embodied therewith, the computer-readableprogram code executable a shared processor to perform an operationcomprising: processing a first logical partition on the shared processorfor the duration of a dispatch cycle; issuing, by a hypervisor, at apredefined time prior to completion of the dispatch cycle, a lightweighthypervisor decrementer (HDEC) interrupt specifying a cache line addressbuffer location in a virtual processor; and responsive to thelightweight HDEC interrupt, writing, by the shared processor, a set ofcache line addresses used by the first logical partition to the cacheline address buffer location in the virtual processor, wherein the cacheline addresses are written to the cache line address buffer in order tofacilitate a subsequent micropartition prefetch process by the firstlogical partition.
 13. The computer program product of claim 12, whereinthe shared processor writes a set of cache line addresses for each of aplurality of logical partitions, the operation further comprising:averaging the amounts of time required to write the set of cache lineaddresses for each of the plurality of logical partitions; and settingthe averaged amount of time as the predefined time to issue thelightweight HDEC interrupt during the processing of the first logicalpartition.